#include <stdio.h>
#include <string.h>
int main()
{
    char butter[100]={0};//创建一个足够大的字符数组作为缓冲区
    if(fgets(butter,sizeof(butter),stdin)!=NULL)
    //使用fgets从stdin中读取一行文本，stdin是标准输入流。
    //（stdout是标准输出流，stderr为标准错误）
    {
        size_t len=strlen(butter);
        //size_t是一个无符号整数类型，用于表示大小或数量
        //且strlen函数返回的是size_t的类型
        if(len>0&&butter[len-1]=='\n')
        {
            butter[len-1]='\0';//将末尾的换行符替换为\0;
        }
        printf("你输入的文本是：\n%s",butter);
    }
    else 
    {
        fprintf(stderr,"输入错误！\n");
        //stderr是标准错误输出流的缩写，主要用于输出错误消息和警告
        //以便用户区分错误输出和错误消息
        return 1;
    }
    return 0;
}
/*
1.使用 fgets 函数从标准输入读取一行文本，fgets会在读取到换行符或文件末尾时
停止读取，最大读取长度由数组大小决定，可以防止栈溢出。
2.检查读取的字符串长度，并移除了尾随的换行符，这样确保了在打印时不会有多余的空格。
3.如果需要读取一行文本，fgets通常是更安全、更简单的选择。
如果需要读取多种类型的数据，并需要复杂的格式化输入，scanf更合适。
*/